package ch13_字符串与正则表达式.案例实践_简单文本搜索器;

import javax.swing.*;
import java.awt.*;

/**
 * @author 挚爱之夕
 * @date 2021/8/28 - 08 - 28 - 15:32
 * @Description: ch13_字符串与正则表达式.案例实践_简单文本搜索器
 * @Version: 1.0
 */
public class TextSearcher extends JFrame{
    public TextSearcher(){
        init();
    }
    private void init(){
        JTextPane tp = new JTextPane(); //待搜索的文本面板
        JPanel p = new JPanel();
        JTextField tf = new JTextField(12); //关键词文本框
        JButton btn = new JButton("搜索");
        p.add(new JLabel("搜索:"));
        p.add(tf);
        p.add(btn);

        setLayout(new BorderLayout());
        add(new JScrollPane(tp),BorderLayout.CENTER);
        add(p,BorderLayout.SOUTH);

        btn.addActionListener(e ->{//处理按钮单击事件
            String keyword = tf.getText().trim();   //获得关键词
            int length = keyword.length();  //关键词长度
            if(length<1)
                return;
            int count = 0;  //匹配计数
            String content = tp.getText();//获取待搜索的文本
            int index = content.indexOf(keyword);//第1次搜索
            int start;//文本面板选中内容的开始索引
            tp.requestFocus();
            while(index!=-1){   //找到
                start = index;
                tp.select(start,start+length);
                tp.insertComponent(new JButton(keyword));
                index = content.indexOf(keyword,index+length);
                count++;
            }
            setTitle("匹配到 "+count + " 项");
        });
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(500,200);
        setVisible(true);
    }

    public static void main(String[] args) {
        new TextSearcher();
    }
}
